<script setup lang="ts">
/**
 * 类型兼容 鸭子类型(如果一只鸟走路像鸭子 ，游泳也像，做什么都像，那么这只鸟就可以当做鸭子)
 * 类型多的可以给类型少的
 * 类型少的不能给类型多的，会报错
 */
type ObjA = {
  a: number
  b: string
}
type ObjB = ObjA & { c: boolean }
let objA: ObjA = {
  a: 1,
  b: '2'
}
objA
let objB: ObjB = {
  a: 1,
  b: '2',
  c: true
}
objB
objA = objB // 多的可以给少的
// objB = objA // 少的不能给多的 报错
function fn(params: ObjB) {
  console.log(params)
}
// fn(objA) // 少的给多的报错
fn(objB)

// 鸭子类型(如果一只鸟走路像鸭子 ，游泳也像，做什么都像，那么这只鸟就可以当做鸭子)
// 如果一只ObjB走路像ObjA ，游泳也像，做什么都像，那么这只ObjB就可以当做ObjA
</script>

<template>
  <div class="playground-page">
    <h1>playground</h1>
  </div>
</template>

<style scoped lang="scss"></style>
